package com.wanwu.channel.facade.dto.req;

import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

@Data
public class ChPrepayReqDto extends ChBaseReqDto {

    private static final long serialVersionUID = -7347823639489929685L;

    /**
     * 商户信息配置标志：1-渠道配置，0-支付配置
     */
    private int merchantConfigFlag;

    /**
     * 支付商户号
     */
    private String merchantNo;


    //通联支付appId
    private String merchantAppId;

    /**
     * 商品ID
     */
    private String productId;
    /**
     * 订单名称 微信格式：天天爱消除-游戏充值
     */
    private String subject;
    /**
     * 商品描述
     */
    private List<Product> body;
    /**
     * 总金额(单位是分)
     */
    private BigDecimal payAmount;
    /**
     * 附件数据主要用于商户携带订单的自定义数据
     */
    private String attach;
    /**
     * 支付方式 (1：PC,平板 2：手机)
     */
    private Short payWay;
    /**
     * 前台回调地址  非扫码支付使用
     */
    private String frontUrl;
    /**
     * 币种
     */
    private String currency;
    /**
     * 总商品数量
     */
    private long totalQuantity;
    /**
     * 支付宝香港版使用，商品的详情描述，不要有特殊字符
     */
    private String goodsDetailDescrption;

    /**
     * 平台分配appid
     * */
    private String appid;

    /**
     * 三方支付用户唯一标识
     */
    private String acct;


    private String userId;

    // 业务线回调地址
    private String businessNotifyUrl;

    private String spbillCreateIp;  //用户IP

    private String sceneCode;

    private String sceneName;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
    }

    /**
     * @author zhy
     * @date 2019-12-28
     * @description 产品订单信息
     */
    @Data
    public static class Product implements Serializable {

        private static final long serialVersionUID = 1L;

        private String sku;

        private long skuNum;

        private String productName;

        @Override
        public String toString() {
            return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
        }
    }
}
